package com.zhdl.common.ytools;

import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.io.resource.Resource;
import cn.hutool.json.JSONUtil;
import com.google.common.io.Files;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * 本地缓存工具类
 */
public class CacheUtil {

    /**
     * 设置为单例模式---------懒汉模式
     */

    private static volatile CacheUtil singleTon;

    private CacheUtil() {
    }

    public static CacheUtil getSingleTon() {
        if (singleTon == null) {
            synchronized (CacheUtil.class) {
                if (singleTon == null)
                    singleTon = new CacheUtil();
            }
        }
        return singleTon;
    }

    /**
     * 读取文件中信息
     *
     * @param key 文件-键
     * @return map集合-String信息
     * @throws IOException 异常
     */
    public String getValue(String key) throws IOException {

        /*
            创建文件
         */
        //File file = new File(System.getProperty("user.dir") + "/src/main/resources/files.txt");

        /*
            更改文件路径获取方式
         */
        Resource resource = new ClassPathResource("files.txt");
        String path = resource.getUrl().getPath();
        File file = new File(path);

        /*
            读取到文件信息-JSON格式
         */
        String string = Files.toString(file, Charset.defaultCharset());

        /*
            转换为Map集合的格式
         */
        Map bean = JSONUtil.toBean(string, Map.class);

        /*
            map集合转换为可读的String类型
         */
        String fileInfo = (String) bean.get(key);

        return fileInfo;
    }

    /**
     * @param key   文件-键
     * @param value 文件-值
     * @throws IOException 异常
     */
    public void putValue(String key, String value) throws IOException {
        /*
            创建文件
         */
        //File file = new File(System.getProperty("user.dir") + "/src/main/resources/files.txt");

        /*
            更改文件路径获取方式
         */
        Resource resource = new ClassPathResource("files.txt");
        String path = resource.getUrl().getPath();
        File file = new File(path);


        /*
            读取到文件信息-JSON格式
         */
        String string = Files.toString(file, Charset.defaultCharset());

        /*
            转换为Map集合的格式
         */
        Map bean = JSONUtil.toBean(string, Map.class);

        /*
            将需要存放的数据存放到map
         */
        bean.put(key, value);

        /*
            将数据转换为json格式
         */
        String jsonStr = JSONUtil.toJsonStr(bean);

        /*
            写入文件
         */
        Files.write(jsonStr, file, Charset.defaultCharset());
    }


}
